# Rsbuild Types

本章节描述了 Rsbuild 提供的一些类型定义。

## RsbuildInstance

Rsbuild 实例的类型，对应 [createRsbuild](/api/javascript-api/core#creatersbuild) 方法的返回值。

```ts
import type { RsbuildInstance } from '@rsbuild/core';

let rsbuild: RsbuildInstance;
```

## RsbuildConfig

Rsbuild 配置的类型。

```ts
import type { RsbuildConfig } from '@rsbuild/core';

const config: RsbuildConfig = {
  // ...
};
```

你也可以引用 Rsbuild 配置中各个字段的类型定义：

```ts
import type {
  DevConfig,
  HtmlConfig,
  ToolsConfig,
  SourceConfig,
  ServerConfig,
  OutputConfig,
  SecurityConfig,
  PerformanceConfig,
  ModuleFederationConfig,
} from '@rsbuild/core';
```

## NormalizedConfig

Rsbuild 配置归一化后的类型，对应 [getNormalizedConfig](/plugins/dev/core#apigetnormalizedconfig) 方法的返回值。

```ts
import type { NormalizedConfig } from '@rsbuild/core';

const config: NormalizedConfig = api.getNormalizedConfig();
```

你也可以引用归一化后的 Rsbuild 配置中各个字段的类型定义：

```ts
import type {
  NormalizedDevConfig,
  NormalizedHtmlConfig,
  NormalizedToolsConfig,
  NormalizedSourceConfig,
  NormalizedServerConfig,
  NormalizedOutputConfig,
  NormalizedSecurityConfig,
  NormalizedPerformanceConfig,
  NormalizedModuleFederationConfig,
} from '@rsbuild/core';
```

## NormalizedEnvironmentConfig

指定环境下的 Rsbuild 归一化配置类型，对应 [`getNormalizedConfig({ environment })`](/plugins/dev/core#apigetnormalizedconfig) 方法的返回值。

```ts
import type { NormalizedEnvironmentConfig } from '@rsbuild/core';

const config: NormalizedEnvironmentConfig = api.getNormalizedConfig({
  environment,
});
```

## RsbuildContext

Rsbuild 实例中 [context 属性](/api/javascript-api/instance#rsbuildcontext)的类型定义。

```ts
import type { RsbuildContext } from '@rsbuild/core';

const context: RsbuildContext = rsbuild.context;
```

## RsbuildPlugin

Rsbuild 插件的类型。

```ts
import type { RsbuildPlugin } from '@rsbuild/core';

const myPlugin: RsbuildPlugin = {
  name: 'my-plugin',
  setup() {},
};
```

## RsbuildPluginAPI

Rsbuild 插件中，setup 函数传入的 api 对象的类型。

```ts
import type { RsbuildPluginAPI } from '@rsbuild/core';

const myPlugin = {
  name: 'my-plugin',
  setup(api: RsbuildPluginAPI) {},
};
```

## RsbuildTarget

Rsbuild 构建产物的类型。

```ts
import type { RsbuildTarget } from '@rsbuild/core';
```

## CreateRsbuildOptions

[createRsbuild](/api/javascript-api/core#creatersbuild) 方法的入参类型。

```ts
import type { CreateRsbuildOptions } from '@rsbuild/core';
```

## InspectConfigOptions

[rsbuild.inspectConfig](/api/javascript-api/instance#rsbuildinspectconfig) 方法的入参类型。

```ts
import type { InspectConfigOptions } from '@rsbuild/core';
```

## Rspack

包含 `@rspack/core` 导出的所有类型，比如 `Rspack.Configuration`

```ts
import type { Rspack } from '@rsbuild/core';

const rspackConfig: Rspack.Configuration = {};
```

## Others

- OnExitFn
- OnAfterBuildFn
- OnAfterCreateCompilerFn
- OnAfterStartDevServerFn
- OnAfterStartProdServerFn
- OnBeforeBuildFn
- OnBeforeStartDevServerFn
- OnBeforeStartProdServerFn
- OnBeforeCreateCompilerFn
- OnCloseDevServerFn
- OnDevCompileDoneFn
- ModifyRsbuildConfigFn
- ModifyBundlerChainFn
- ModifyRspackConfigFn
- TransformFn,
- TransformHandler
- more...
